package main

import "fmt"

//本质是一个指针
type inf interface {
	Sleep()
}

// 具体的类
type Cat struct {
	color string // 猫的颜色
}

func (C *Cat) Sleep() {
	fmt.Println("cat is sleeping...")

}

// 具体的类
type Dog struct {
	color string // 猫的颜色
}

func (C *Dog) Sleep() {
	fmt.Println("Dog is sleeping...")

}

func showcole(xx inf) {
	xx.Sleep()
}

func main() {
	var animal inf //接口的数据类型， 父类指针
	animal = &Cat{color: "ddd"}
	animal.Sleep() //调用的就是Cat的Sleep()方法 , 多态的现象
	a := Cat{color: "blue"}
	showcole(&a)
}
